iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
IT 管理

30 天玩轉 GAS: 打造你的個人自動化助手系列 第 5

[Day 5] GAS - 設定時間導向觸發條件 newTrigger().timeBased()

  • 分享至 

  • xImage
  •  

昨天講完了事件觸發條件,你可能會問...

Q: 那我可以「定時」執行某個函式嗎?

A: 當然可以,這時候你就需要「時間導向的觸發條件」!
除了事件導向的觸發條件,App Scripts 也有提供時間導向的觸發條件
先介紹如何用程式完成時間的觸發:

情境:

每分鐘在 google sheet 新的一列更新上當前時間

首先我們需要兩個 function:

  • createTimeDrivenTriggers() --> 時間觸發器
  • addTimeAtLastRow() --> 被觸發到欲執行的 function

就 Follow 以下步驟一起來建立一個 Time Trigger 吧!

1 . 首先先寫出我們需要的做的事情 addTimeAtLastRow()

/** 取得工作表最後一列空的資料格並填上時間 **/

function addTimeAtLastRow(){ 
  // 取得當前工作表
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();  
  // 取得有資料的最後一列再加一列
  var numRows = sheet.getLastRow() +1;    
  
  // get current time
  var now = new Date();  
  // 轉型並以 --:-- AM/PM 格式顯示。 e.g. "15:25 PM" 
  var currentTime = now.toLocaleTimeString(); 
  // 填寫進入到對應的儲存格
  sheet.getRange(numRows, 1).setValue(currentTime);   
}

Note: 更多詳細 google sheet 的語法後面再介紹

2. 接下來就是建立時間觸發器 Time Trigger !

/** 建立每分鐘的觸發器 time trigger */
function createTimeDrivenTriggers() {
  ScriptApp.newTrigger("addTimeAtLastRow")
  .timeBased()
  .everyMinutes(1) // Trigger every 1 min.
  .create();
}

Time Trigger 不只可以用分鐘計, 也可以用小時、天,甚至也可以指定日期時分等等。
更多詳細用法請參考官方 API 文件 ClockTriggerBuilder 以及 透過程式輔助方式管理觸發條件

3. 還沒接束!要記得「執行」剛建立好的 Time Trigger!
time_trigger_run

4. 到 選單>觸發條件,確認有無新增到此觸發條件
time_trigger_created

5. 結果
time_trigger_result


Q:好懶喔~一定要打這麼多程式嗎,沒有更簡單的方法嗎

A:眼尖的朋友們應該早就發現了,觸發條件這個頁面就是為你這個懶人設計的!點右下的「+新增觸發條件」就可以新增啦!!

  • Event Trigger
    GUI_trigger_event

  • Time Trigger
    GUI_trigger_time_1
    GUI_trigger_time_2
    GUI_trigger_time_3

恭喜你學會了自動化的重要元素之一 - 觸發條件啦!!!
接下來我們就可以進行第一個實作拉 - Google form 表單自動化寄出信件


上一篇
[Day 4] GAS - 設定以事件為準的觸發條件OnEdit/OnOpen/onSelectionChange
下一篇
[Day 6] GAS - Google form 表單自動化寄出信件
系列文
30 天玩轉 GAS: 打造你的個人自動化助手13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言